package com.mall.utils;

import com.mall.entity.Product;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.math.BigDecimal;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

// 初始化数据工具类

@Component
public class HtmlParseUtil {


    public static void main(String[] args) throws IOException {
        new HtmlParseUtil().parseJD("华为手机");
    }

    public static List<Product> parseJD(String keywords) throws IOException {
        // 获取请求,前提需要联网，ajax不能获取到！
        String url = "https://search.jd.com/Search?keyword=" + keywords + "&enc=utf-8";
        // 解析网页.（Jsoup返回的Document就是页面对象）
        Document document = Jsoup.parse(new URL(url), 30000);
        // 所有你在js中可以使用的方法
        Element element = document.getElementById("J_goodsList");
        // 获取所有的li元素    
        Elements elements = element.getElementsByTag("li");
        // 获取元素中的内容,el代表每一个li标签

        ArrayList<Product> list = new ArrayList<>();
        for (Element el : elements) {
            // 关于这种图片特别多的网站，都是延迟加载的
            String image = el.getElementsByTag("img").eq(0).attr("source-data-lazy-img");
            String price = el.getElementsByClass("p-price").eq(0).text();
            String title = el.getElementsByClass("p-name").eq(0).text();
            System.out.println("=========================");
            System.out.println(image);
            if (StringUtils.isNotBlank(image) && StringUtils.isNotBlank(price) && StringUtils.isNotBlank(title)) {
                price = price.substring(1);
                if (price.contains("￥")) {
                    price = price.substring(0, price.lastIndexOf("￥"));
                }
                System.out.println(price);
                System.out.println(title);


                Product product = new Product();
                String[] strings = title.split(" ", 2);
                product.setName(title.split(" ", 2)[0]);
                product.setTypeId(1);
                if (strings.length > 1) {
                    product.setDescription(title.split(" ", 2)[1]);
                }
                product.setLaunchPrice(new BigDecimal(price));
                product.setCount(RandomUtils.nextInt(0, 1000));
                product.setTypeId(5);
                product.setDeleted(0);
                product.setUrl(image);
                list.add(product);

            }
        }

        return list;
    }
}
